Project Name | Author | License | JDK Version | Platforms | Language | Threads | GC | JIT |
Kaffe | Tim Wilkinson, et al. | GPL | 1.2 (partly) | x86, sparc, m68k, arm, mips, alpha, ppc, parisc Windows, Unix variants, DOS |
C | OS Threads | Conservative Mark/Sweep | Slow as hell |
Kaffe is a cleanroom, open source implementation of a Java virtual machine and class libraries. This is the oldest and by far the most complete clean room open source Java virtual machine implementation. However, the performance leaves a lot to be desired. |
||||||||
LaTTe | MASS Lab, Seoul National University | BSD-like | 1.1 (No AWT) | Sparc | C | OS Threads | Fast incremental | Adaptive |
LaTTe is a virtual machine which is able to execute Java bytecode. It includes a novel JIT compiler targeted to RISC machines (specifically the UltraSPARC). The JIT compiler generates RISC code of good quality through a clever mapping of Java stack operands to registers with a negligible overhead. Additionally, the runtime components of LaTTe, including thread synchronization, exception handling, and garbage collection, have been optimized. As a result, the performance of LaTTe is competitive with that of Sun's JDK 1.2 production release and JDK 1.3 release candidate client/server VMs (HotSpot). Originally based on Kaffe, this has come a long way. |
||||||||
Open Runtime Platform | Intel Research | ? | ? | x86 on Linux, Windows | C | ? | Multiple | Multilevel |
ORP, Open Runtime Platform, implements advanced JIT and GC interfaces. These interfaces allow the JIT, GC and remaining runtime system to be developed in complete isolation and at independent rates. A major benefit is that JIT and GC researchers are relieved of the intractable task of developing a full system before they can innovate in their area of expertise. The basic system incorporates a fast code generating JIT as well as an optimizing JIT. It also includes several GC algorithms, ranging from a simple mark-sweep algorithm to an advanced train algorithm. |
||||||||
Blackdown JDK for Linux | Blackdown development team | Sun CSL | 1.3 | ppc, x86, s390, sparc, arm | C | Green / Native | Conservative Mark/Sweep | None |
Blackdown was the first group to port Java 1.0, 1.1, and then 1.2 to Linux. Basically an uninspiring reference implementation, but the only one for Linux until fairly recently. |
||||||||
kissme | John Leuner, et al. | GPL | 1.2 (Classpath, No AWT) | x86, Linux | C, JIT is in Java | OS Threads | Conservative Mark/Sweep | None yet, plan to write in Java |
kissme started its life as a Honours project by Stephen Tjasink while he was studying at the University of Cape Town. Initially the JVM was developed for a set-top box that came with a TV Satellite Decoder. To fulfill this goal the JVM was designed to run on a slow processor and with limited memory. One of unconventional aspects of the project was the need to store class files in ROM. The JVM was modified to be able to store the runtime class information on the ROM and then load it again when booting. When Stephen did his Masters degree the next year, he decided to extend the VM to support orthogonal persistence. Persistent programming languages allow the programmer to indicate which objects in memory should be saved on secondary storage. The runtime (or a compiled in library) will ensure that the data is saved automatically and transparently on disk. When the program restarts it can retrieve this information transparently. It uses Classpath libraries. JIT work started in February 2000, still not completed. |
||||||||
SableVM | Sable group at McGill | GPL | 1.2 (Classpath) | x86, Linux | C | ? | Precise copying collector | None |
SableVM is an open-source virtual machine for Java, intended as a research framework for efficient execution of Java bytecode. The framework is essentially composed of an extensible bytecode interpreter using state-of-the-art and innovative techniques. Interpreter-only, just barely runs "Hello, world!". However, they have some interesting techniques for run time services (thin locks, etc.) |
||||||||
Japhar | Petter, et al. | LGPL | 1.2 (Classpath) | x86, sparc, arm Unix variants, Win32, BeOS |
C | ? | ? (None?) | None |
Japhar is the Hungry Programmers' Java VM. It has been built from the ground up without consulting Sun's sources. Development seems to be slow. Moving from version 0.08 to 0.09 took 18 months (?). |
||||||||
CACAO | Andreas Krall | ? | 1.0.2 | Alpha | C | ? | ? | Simple |
CACAO is 64 bit just-in-time (JIT) compiler for Java. It translates Java byte code on demand into native code for the ALPHA processor. This doesn't seem to be in development anymore. |
Project Name | Author | License | VM | Platforms | Language |
OpenJIT | Tokyo Institute of Technology | BSD-like | Any | Sparc | Java |
The OpenJIT project is an ongoing Java (the programming language) JIT compiler project as a collaborative effort between Tokyo Institute of Technology and Fujitsu Laboratory, partly sponsored by the Information Promotion Agency of Japan. OpenJIT is a "reflective" JIT compiler in that not only it is almost entirely written in Java, but also that it bootstraps and compiles itself during execution of the user program, and compiler components coexist as first-class objects in user heap space. Thus, users can tailor and customize the compilation of classes at runtime for variety of purposes such as application-specific optimization and partial evaluation, dynamic, compiler-assisted environment adaptation of programs, debugging, language extension and experimentation, and other types of advanced compiler-based research and applications. OpenJIT even allows full dynamic update of itself by loading the compiler classes on the fly from the network. | |||||
TYA | Albrecht Kleine | GPL | Blackdown, BSD | x86 | C |
TYA is a JIT-compiler designed as an add-on to the Blackdown and BSD ports of JDK 1.1 and JDK 1.2 for x86-Linux and FreeBSD. TYA is ``100% unofficial'', in no way related to Sun. Really, really slow JIT. |
|||||
shuJIT | Kazuyuki Shudo | ? | Linux, BSD | x86 | C |
ShuJIT is a Just In Time compiler (JIT) for Sun Microsystems' Java Virtual Machine (JVM) (i.e. JDK, JRE) and Intel IA-32 (x86) processors. It works on Linux and FreeBSD. Performance is average. He has my photo on his page, from Java Grande 2000. |
|||||
ElectricalFire | Mozilla.org | Netscape PL | Mozilla | x86 | C |
ElectricalFire is a Java Virtual Machine that uses JIT (Just In Time) compilation techniques to accelerate Java code execution. ElectricalFire was designed from the start to generate high-performance machine code and to be portable to many different processor architectures. It hasn't been updated in over a year. This project is dead. A team of programmers two months to get Sieve to compile correctly... |
|||||
Briki | Kaffe | ||||
Briki is a now defunct research project to implement an optimizing JIT, which was based on Kaffe. |
Alta | ? | GPL | ? | ? | ? | ? | ? | ? |
The Alta Virtual Machine is a Java-compatible Virtual Machine designed to provide nested process services to Java applications. Alta is based on Kaffe. | ||||||||
Guaran???? | GPL | |||||||
Guaran???? is a reflective architecture that aims at simplicity, flexibility, security and reuse of meta-level code. It uses Kaffe as its base. | ||||||||
Kiev | GPL | |||||||
Kiev is a compiler which extends and unite Java and Prolog. A version of Kaffe is used as a virtual machine to provide support for extended bytecode. | ||||||||
PJama | University of Glasgow and SunLabs | ? | 1.1.7 | N/A | N/A | N/A | N/A | N/a |
The PJama started in September 1995 with funding from Sun Microsystems for an investigation into the feasability of support for orthogonal persistence in the programming language Java. A subsequent PJava project proposal for "PJava: High Performance Orthogonally Persistent Java Servers", highly-rated by the EPSRC (Engineering and Physical Sciences Research Council), provides further funding. Based on the standard JDK 1.1.7 source code. The project ended in September 2000. |
gcj | RedHat | GPL |
GCJ is a portable, optimizing, ahead-of-time compiler for
the Java Programming Language. It can compile...
|
||
Jikes | Dave Shields and Phillipe Charles | BSD-like |
Jikes is a compiler that translates Java source files as
defined in The Java
Language Specification into the bytecoded instruction set and binary
format defined in The
Java Virtual Machine Specification. Features include:
|
||
GNU Classpath | ??? | GPL |
GNU Classpath is a set of essential libraries for supporting the Java language. The goal is to provide a free replacement for Sun's proprietary class libraries so that the GNU system can run programs written in the Java language. | ||
Mauve | ??? | GPL |
The Mauve Project is a collaborative effort to write a free test suite for the Java class libraries. |